﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MachineVision.Core.TemplateMatch.Shared;

namespace MachineVision.Core.TemplateMatch.ShapeModel
{
    /// <summary>
    /// 形状匹配模板参数
    /// </summary>
    public class ShapeModelInputParameter : BaseParameter
    {
        public ShapeModelInputParameter() : base()
        {

        }
        public override void ApplyDefaultParameter()
        {
            NumLevels = "auto";
            AngleStart = -0.39;
            AngleExtent = 0.79;
            AngleStep = "auto";
            Optimization = "auto";
            Metric = "use_polarity";
            Contrast = "auto";
            MinContrast = "auto";
        }
        private string numLevels;
        private double angleStart;
        private double angleExtent;
        private string angleStep;
        private string optimization;
        private string metric;
        private string contrast;
        private string minContrast;
        /// <summary>
        /// 金字塔层数
        /// </summary>
        public string NumLevels { get => numLevels; set { numLevels = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 模板旋转起始角度
        /// </summary>
        public double AngleStart { get => angleStart; set { angleStart = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 模板旋转角度范围
        /// </summary>
        public double AngleExtent { get => angleExtent; set { angleExtent = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 旋转角度步长
        /// </summary>
        public string AngleStep { get => angleStep; set { angleStep = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 模板优化方法
        /// </summary>
        public string Optimization { get => optimization; set { optimization = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 匹配方法
        /// </summary>
        public string Metric { get => metric; set { metric = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 对比度
        /// </summary>
        public string Contrast { get => contrast; set { contrast = value; RaisePropertyChanged(); } }
        /// <summary>
        /// 最小对比度
        /// </summary>
        public string MinContrast { get => minContrast; set { minContrast = value; RaisePropertyChanged(); } }
    }

}
